package com.haisen.service;

import com.haisen.dataobject.dto.ItemCatDto;
import com.haisen.dataobject.dto.TreeDto;
import com.haisen.dataobject.entity.ItemCat;
import com.haisen.dataobject.entity.ItemParamGroup;
import com.haisen.dataobject.entity.ItemParamKey;
import tk.mybatis.mapper.weekend.Weekend;

import java.util.List;

public interface ItemCatService {
    /**
     * 增加
     * @param itemCat
     */
    void create(ItemCat itemCat);

    /**
     * 修改
     * @param itemCat
     */

    void update(ItemCat itemCat);

    /**
     * 删除
     * @param itemCatId
     */

    void delete(Long itemCatId);

    /**
     * loadById
     * @param itemCatId
     * @return
     */

    ItemCat findOneById(Long itemCatId);

    /**
     * 查询列表
     * @param example
     * @return
     */
    List<ItemCatDto> findItemCatDto(Weekend example);

    /**
     * 生成树结构
     * @param pId
     * @return
     */
    List<TreeDto> findItemCatTree(Long pId);

    /**
     * 发现所有
     * @return
     */
    List<ItemCat> findAll();

    /**
     * 查询之前的方法
     * @param excludeItemCat
     * @return
     */
    List<ItemCat> findAllWithExclude(ItemCat excludeItemCat);

    /**
     * 移去节点
     * @param source
     * @param target
     */

    void move(ItemCat source, ItemCat target);

    /**
     * 根据种类id查属性组
     * @param id
     * @return
     */
    List<ItemParamGroup> selectGroups(Long id);

    List<ItemCatDto> selectCatAndGroups();

    /**
     * 根据种类id查参数列表
     * @param id
     * @return
     */
    List<ItemParamKey> selectParamKeys(Long id);



}
